首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
schema
runtime
hashcode
int
actionscrip
utf-8
php8
rsa
uml
vbscript
config
subset
hash
golang
case
blob
string
io
get
tags
eval
python3
typescript
replace
frameworks
less
php7
netty
process
bitmap
split
text
command
include
future
hashtable
require
loops
function
join
solr
bash
jsp
php5
chat
spring
buffer
char
controller
export
bytecode
substring
list
javascript
cookie
client
erlang
ascii
search
instance
httpclient
range
fetch
sum
random
callback
grid
dagger
merge
regex
input
version
c语言
match
integer
expression
byte
python2
nodejs
当前位置:
开发笔记
>
编程语言
> 正文
下图|加号_Flink1.9.2源码编译和使用
作者:刘伟亮 | 来源:互联网 | 2023-08-30 15:06
篇首语:本文由编程笔记#小编为大家整理,主要介绍了Flink1.9.2源码编译和使用相关的知识,希望对你有一定的参考价值。欢迎访
篇首语:本文由编程笔记#小编为大家整理,主要介绍了Flink1.9.2源码编译和使用相关的知识,希望对你有一定的参考价值。
欢迎访问我的GitHub
为什么要编译flink源码
用于学习,在IDEA上开发的flink job,能直接在IDEA运行,如果运行时依赖的flink框架是我们自己编译构建的,就做到了从业务到框架都可以修改源码并验证,起到了很好的学习和动手实践效果;
环境信息
电脑:2019版13寸MacBook Pro,2.3 GHz 四核Intel Core i5,8 GB 2133 MHz LPDDR3
操作系统:macOS Catalina 10.15.3
JDK:1.8.0_211
Maven:3.6.0
IDEA:2018.3.5 (Ultimate Edition)
关于正版IDEA
如何免费使用正版IDEA,可以参考《免费申请和使用IntelliJ IDEA商业版License指南》
全文概览
今天的实战由以下内容组成:
开发一个最简单的flink任务,在IDEA上以local模式运行;
下载flink1.9.2源码;
修改flink1.9.2源码,并且编译构建;
设置,让步骤1中的flink任务用上刚刚编译的flink1.9.2框架;
再次运行flink任务,验证修改后的flink框架是否生效;
IDEA上运行flink job工程
在IDEA上创建flink job的maven工程并运行,请参考《IDEA上运行Flink任务》
假设您已按上面的步骤在IDEA建好了flink job工程;
运行起来,在浏览器打开flink页面,如下图,绿框中显示一共有8个Task Slot:
之所以会有8个Task Slot,和下图红框中的代码有关,这是段flink框架源码(StreamExecutionEnvironment.java),入参
parallelism
是CPU核数,我这里是开了超线程的四核i5处理器,所以
parallelism
等于8:
今天的目标就是修改上图红框中的源码,然后在网页上看是不是生效了(Task Slot数量从8改成5);
准备工作
maven中央仓库地址建议用阿里云的,否则会经常遇到jar下载超时错误,地址:http://192.168.50.43:8081/repository/aliyun-proxy/
flink1.9.2源码的maven工程依赖了一个中央仓库没有的jar,GAV是io.confluent:kafka-schema-registry-client:3.3.1,您需要下载下来在本地仓库做
mvn install
操作,下载地址:http://packages.confluent.io/maven/io/confluent/kafka-schema-registry-client/3.3.1/kafka-schema-registry-client-3.3.1.jar
上述准备工作都需要您在本地maven上操作,但是如果您的条件允许,还是强烈推荐在内网搭建maven私服nexus3,参考:《群晖DS218+做maven私服(nexus3)》、《Ubuntu部署和体验Nexus3》、《Nexus3常用功能备忘》
下载flink1.9.2源码
flink1.9.2源码的下载地址:http://ftp.jaist.ac.jp/pub/apache/flink/flink-1.9.2/flink-1.9.2-src.tgz
修改和编译构建
将下载好的flink-1.9.2-src.tgz解压,得到文件夹flink-1.9.2
打开这个文件:flink-1.9.2/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/environment/StreamExecutionEnvironment.java
如下图红框,找到
createLocalEnvironment
方法,把
setParallelism
的入参改成一个固定的数字(每个Task Slot都要分配内存,所以这个数字请不要改得太大,否则启动flink就会报错了,我这里改成了5):
在文件夹
flink-1.9.2
下,执行编译构建的命令:
mvn clean install -DskipTests -Dfast
经历漫长等待后提示构建成功:
确认这个文件已生成,稍后就要用到:
flink-1.9.2/flink-dist/target/flink-dist_2.11-1.9.2.jar
设置
为了用上刚刚构建出来的flink框架jar,要做些设置,打开之前运行的flink job应用,在项目上点击右键,点击菜单
Open Module Settings
,如下图:
接下来要做三个和jar有关的操作,注意每一步都很重要:
下图红框1中的flink-dist_2.11-1.9.2.jar文件,是《IDEA上运行Flink任务》一文中添加的,目的是提供网页服务,现在将其删除,操作如下图红框所示:
下图红框1中的maven依赖:
org.apache.flink:flink-streaming-java_2.11:1.9.2
,也请删除,操作如下图红框所示:
点击下图红框中的加号:
在弹出的窗口选中刚才构建好的文件
flink-1.9.2/flink-dist/target/flink-dist_2.11-1.9.2.jar
:
记得点击右下角的OK按钮保存,修改完毕,接下来验证咱们修改的flink框架源码是否生效了
验证
当前flink job工程来自《IDEA上运行Flink任务》一文,StreamingJob的工作是读取本机18081端口的数据,所以我们要把18081端口的服务启动起来,不然StreamingJob运行时是连不上端口的,打开一个控制台,执行命令:
nc -l 18081
现在可以将StreamingJob运行起来,如下图,右键点击StreamingJob,选择Run StreamingJob.main():即可启动flink任务:
在IDEA的控制台搜索关键字
localhost
,如下图红框,可以查到flink网页的端口,我这里是
52704
:
浏览器访问
http://localhost:52704
,如下图红框,Total Task Slots数量是5,我们修改的flink1.9.2的源码生效了:
至此,Flink1.9.2的源码从修改到编译构建,再到验证都已经完成了,如果您也在学习flink,希望本文能给您一些参考,一起来动手实战吧;
欢迎关注51CTO博客:
程序员
欣宸
android
flink
编译
编程
git
ide
int
macos
io
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
process
Kafka 版本不兼容引发 TaskExecutor 启动故障分析与解决
在本地环境中部署了两个不同版本的 Flink 集群,分别为 1.9.1 和 1.9.2。近期在尝试启动 1.9.1 版本的 Flink 任务时,遇到了 TaskExecutor 启动失败的问题。尽管 TaskManager 日志显示正常,但任务仍无法成功启动。经过详细分析,发现该问题是由 Kafka 版本不兼容引起的。通过调整 Kafka 客户端配置并升级相关依赖,最终成功解决了这一故障。 ...
[详细]
蜡笔小新 2024-11-08 14:13:56
get
优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ...
[详细]
蜡笔小新 2024-11-09 16:13:27
replace
如何使用 `org.eclipse.rdf4j.query.impl.MapBindingSet.getValue()` 方法及其代码示例详解
如何使用 `org.eclipse.rdf4j.query.impl.MapBindingSet.getValue()` 方法及其代码示例详解 ...
[详细]
蜡笔小新 2024-11-11 02:42:52
get
C++ 开发实战:实用技巧与经验分享
C++ 开发实战:实用技巧与经验分享 ...
[详细]
蜡笔小新 2024-11-07 20:31:03
get
oracle c3p0 dword 60,web_day10 dbcp c3p0 dbutils
createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ...
[详细]
蜡笔小新 2024-11-12 19:26:15
get
com.hazelcast.config.MapConfig.isStatisticsEnabled()方法的使用及代码示例
com.hazelcast.config.MapConfig.isStatisticsEnabled()方法的使用及代码示例 ...
[详细]
蜡笔小新 2024-11-12 14:33:17
string
深入解析:Synchronized 关键字在 Java 中对 int 和 Integer 对象的作用与影响
深入探讨了 `Synchronized` 关键字在 Java 中对 `int` 和 `Integer` 对象的影响。尽管初看此题似乎简单,但其实质在于理解对象的概念。根据《Java编程思想》第二章的观点,一切皆为对象。本文详细分析了 `Synchronized` 关键字在不同数据类型上的作用机制,特别是对基本数据类型 `int` 和包装类 `Integer` 的区别处理,帮助读者深入理解 Java 中的同步机制及其在多线程环境中的应用。 ...
[详细]
蜡笔小新 2024-11-11 13:13:17
get
如何使用 `org.apache.tomcat.websocket.server.WsServerContainer.findMapping()` 方法及其代码示例解析
如何使用 `org.apache.tomcat.websocket.server.WsServerContainer.findMapping()` 方法及其代码示例解析 ...
[详细]
蜡笔小新 2024-11-11 10:08:55
process
Python 伦理黑客技术:深入探讨后门攻击(第三部分)
在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ...
[详细]
蜡笔小新 2024-11-09 16:33:02
get
基于CXF框架的Web服务开发详细示例
在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ...
[详细]
蜡笔小新 2024-11-08 18:43:17
io
Presto:高效即席查询引擎的深度解析与应用
本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ...
[详细]
蜡笔小新 2024-11-07 19:17:47
get
CLIfe:我的高效开发环境配置
在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ...
[详细]
蜡笔小新 2024-11-07 18:32:20
get
Android中将独立SO库封装进JAR包并实现SO库的加载与调用
在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ...
[详细]
蜡笔小新 2024-11-07 14:28:55
get
Java 并发编程:深入解析 AtomicInteger 和 CAS 无锁算法
在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ...
[详细]
蜡笔小新 2024-11-12 16:40:04
get
如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ...
[详细]
蜡笔小新 2024-11-11 12:12:04
刘伟亮
这个家伙很懒,什么也没留下!
Tags | 热门标签
schema
runtime
hashcode
int
actionscrip
utf-8
php8
rsa
uml
vbscript
config
subset
hash
golang
case
blob
string
io
get
tags
eval
python3
typescript
replace
frameworks
less
php7
netty
process
bitmap
RankList | 热门文章
1
JS后台读出来怎么转成正常的日期
2
【资讯】11月11日每日安全资讯播报
3
带有单个模板参数的`std::variant`的目的是什么?
4
引导 4 |警报
5
Bad error "can open file"
6
mysql数据库安装图解,android开发书籍
7
接口请求日志应该打印返回体吗?
8
expresssession中间件session获取不到问题
9
CAD视频教程入门到精通
10
MySQL 误删数据?试试数据闪回工具binlog2sql
11
Pluload结合PHP 上传视频
12
孙玄达叔:年薪75万的真实技术面试实践攻略(篇章二)
13
《Hadoop与大数据挖掘》一2.2.4 动手实践:一键式Hadoop集群启动关闭
14
WIN10运行软件,窗口不显示(移动到屏幕外无法复原)的解决办法 Lebal:bug10解决方案...
15
linux 脚本 java_Linux 通过脚本执行Java程序
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有